local M = _G.CommonOHOH.class.new(script, _G.CommonOHOH.files.BaseComponent(),script.Parent.Name.."_base");

-- local game_cfg=_G.CommonOHOH.config.Game
-- local gWait2startGame=game_cfg.wait2startGame--等待开始一局游戏(开始一局游戏的准备时间)
-- local gWait2endGame=game_cfg.wait2endGame--等待一局游戏结束时间（即一局游戏的最长时间)
-- local gWait2showTime=game_cfg.wait2showTime--一局游戏结束的结算时间（showTime，播放获胜者上领奖台动画等）

--游戏状态,0：等待开始一局游戏，1：正在比赛中，2：结算比赛

function M.new(self)
	return M(self);
end;


function M.ctor(self, parent)
	M.super.ctor(self, parent)
    self.Game=parent
    self.State=0
    self.StateTime=os.time()
    self.ReachPlayers={} --到达终点的玩家
end;

--游戏结束 showTime时间
function M.ShowTime(self)
    print("ShowTime--->")
    self:SetSate(2)
    -- self:AddProcess(function()
    --     self:Wait(gWait2showTime)
    --     self:Ready()
    -- end)
end


--装备开始一场游戏
function M.Ready(self)
    print("Ready--->")
    self:SetSate(0)
    -- self:AddProcess(function()
    --     self:Wait(gWait2startGame)
    --     self:Start()
    -- end)
end

--开始一局游戏
function M.Start(self)
    print("Start--->")
    self.ReachPlayers={} --到达终点的玩家
    self:SetSate(1)

--     self.WaitEndConn= self:AddProcess(function()
--         self:Wait(gWait2endGame)
--         self:ClearStart()
--         self:ShowTime()
--     end)

--     --监听玩家到达终点
--    self.ReachTheEndConn= self.Game.ReachTheEndEvent:Connect(function(userId)
--          table.insert(self.ReachPlayers,userId)
--          if #self.ReachPlayers==3 then --有三位玩家到达终点，结束游戏
--             self:ClearStart()
--             self:ShowTime()
--          end
--     end)
    
end

-- --清楚游戏中的某些状态
-- function M.ClearStart(self)
--     if  self.WaitEndConn then
--         self.WaitEndConn:Disconnect()
--         self.WaitEndConn=nil
--     end
--     if  self.ReachTheEndConn then
--         self.ReachTheEndConn:Disconnect()
--         self.ReachTheEndConn=nil
--     end
-- end


function M.SetSate(self,sate)
    self.State=sate
    self.StateTime=os.time()
    self.Game.GameStateChangeEvent:Action(self.State)
    print("GameStateChangeEvent--->",self.State)
end

-----------------------对外公开接口---------------------------------
--游戏状态,0：等待开始一局游戏，1：正在比赛中，2：结算比赛
--获取游戏状态
function M.GetGameState(self)
    return  self.State
end

--获取进入该状态的初始时间
function M.GetStateTime(self)
    return   self.StateTime
end

--获取到达终点的玩家
function M.GetReachPlayers(self)
    return self.ReachPlayers
end

return M